package com.douma._2022_7_4;

import java.util.*;

/**
 * 抖码算法，让算法学习变的简单有趣
 *
 * @作者 : 老汤
 */
public class 斗地主之顺子 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[] s = sc.nextLine().split(" ");

        int len = s.length;
        List<Integer> pais = new ArrayList<>();

        // 将 J、Q、K、A 转换为对应的数字
        for (int i = 0; i < len; i++) {
            switch (s[i]) {
                case "J":
                    pais.add(11);
                    break;
                case "Q":
                    pais.add(12);
                    break;
                case "K":
                    pais.add(13);
                    break;
                case "A":
                    pais.add(14);
                    break;
                case "2": // 顺子中 2 没什么用，剔除掉
                    break;
                default:
                    pais.add(Integer.valueOf(s[i]));
            }
        }

        // 升序排列
        Collections.sort(pais);

        List<List<Integer>> res = new ArrayList<>();
        // 标志是否遍历完所有的牌
        boolean isFinish = false;

        while (!isFinish) {
            List<Integer> shunzi = new ArrayList<>();
            // 先将第一张牌放入到当前顺子中
            shunzi.add(pais.get(0));
            int count = 1;
            for (int i = 1; i < pais.size(); i++) {
                int currPai = pais.get(i);
                if (currPai == pais.get(i - 1) + 1) {
                    // 当前牌等于前一张牌 +1， 将当前牌加入当前顺子中
                    shunzi.add(currPai);
                    count++; // 记录当前顺子的牌数
                } else if (currPai == pais.get(i - 1) && i != pais.size() - 1) {
                    // 当前牌等于前一张牌，且当前牌不是最后一张，那么
                    continue;
                } else {
                    if (count >= 5) { // 符合顺子
                        res.add(shunzi);
                    } else if (i == pais.size() - 1) {
                        // 整个数组遍历完全，直接退出
                        isFinish = true;
                        break;
                    }

                    // 从输入的牌中删除已经组成当前顺子的牌
                    for (int j = 0; j < shunzi.size(); j++) {
                        for (int k = 0; k < pais.size(); k++) {
                            if (shunzi.get(j) == pais.get(k)) {
                                pais.remove(k);
                                break;
                            }
                        }
                    }

                    // 如果剩余的牌不够 5 张，则直接退出
                    if (pais.size() < 5) {
                        isFinish = true;
                    }

                    // 顺子已经提取，跳出本次循环
                    break;
                }
            }
        }

        if (res.size() == 0) {
            System.out.println("No");
        } else {
            for (int i = 0; i < res.size(); i++) {
                String resStr = "";
                for (int j = 0; j < res.get(i).size(); j++) {
                    switch (res.get(i).get(j)) { // 将 A、J、Q、K 还原
                        case 11:
                            resStr += "J";
                            break;
                        case 12:
                            resStr += "Q";
                            break;
                        case 13:
                            resStr += "K";
                            break;
                        case 14:
                            resStr += "A";
                            break;
                        default:
                            resStr += res.get(i).get(j);
                    }
                    if (j < res.get(i).size() - 1) {
                        resStr += " ";
                    }
                }

                System.out.println(resStr);
            }
        }
    }
}
